package ru.sstu.renju.config;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import ru.sstu.renju.core.Game;
import ru.sstu.renju.core.Player;
import ru.sstu.renju.core.Row;
import ru.sstu.renju.players.HumanPlayer;
import ru.sstu.renju.players.RandomPlayer;
import ru.sstu.renju.players.SimplePlayer;
import ru.sstu.renju.ui.renderers.BlackWhiteRenderer;
import ru.sstu.renju.ui.renderers.GameRenderer;
import ru.sstu.renju.ui.renderers.NoughtsCrossesRenderer;

/**
 * <code>ConfigConsts</code> class contains configuration constants.
 *
 * @author denis_murashev
 * @since Renju 1.0
 */
public final class ConfigConsts {

	/**
	 * Game size in cells.
	 */
	public static final int GAME_SIZE = Game.SIZE;

	/**
	 * Row size in cells.
	 */
	public static final int ROW_SIZE = Row.SIZE;

	/**
	 * Default cell size in pixels.
	 */
	public static final int CELL_SIZE = 40;

	/**
	 * List of available players.
	 */
	public static final List<Player> PLAYERS = Collections
			.unmodifiableList(Arrays.asList(new HumanPlayer(),
					new RandomPlayer(), new SimplePlayer()));

	/**
	 * List of available game renderers.
	 */
	public static final List<GameRenderer> RENDERERS = Collections
			.unmodifiableList(Arrays.asList(
					new BlackWhiteRenderer(CELL_SIZE),
					new NoughtsCrossesRenderer(CELL_SIZE)));

	private ConfigConsts() {
	}
}
